package com.teradata.singleton.hungry;

/**
 * 第三种（饿汉）：
 * 这种方式基于classloder机制避免了多线程的同步问题，不过，instance在类装载时就实例化.
 * 虽然导致类装载的原因有很多种，在单例模式中大多数都是调用getInstance方法，
 * 但是也不能确定有其他的方式（或者其他的静态方法）导致类装载，
 * 这时候初始化instance显然没有达到lazy loading的效果。
 *
 * 它是在类加载的时候就立即初始化，并且创建单例对象
 *  优点：没有加任何的锁、执行效率比较高
 *  在用户体验上来说，比懒汉式更好
 *
 *  缺点：类加载的时候就初始化，不管你用还是不用，都占用空间
 *  浪费内存，可能占着茅坑不拉屎
 *
 *  线程绝对安全
 *
 */
public class HungryManSingleton {
    //1.建立私有化单例类型成员变量
    private static HungryManSingleton instance = new HungryManSingleton();

    //2.建立私有化空参构造器
    private HungryManSingleton() {
    }

    //3.建立静态方法,返回单例实例
    public static HungryManSingleton getInstance() {
        return instance;
    }
}
